package curso.maven.cidades.wicket;

import java.util.List;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.PropertyListView;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;

import curso.maven.cidades.aplicacao.api.AplicacaoCidades;
import curso.maven.cidades.negocio.Cidade;

public class HomePage extends WebPage {
	private static final long serialVersionUID = 1L;
	private Model<String> nomeCidade;

	public HomePage() {
		this.nomeCidade = new Model<String>();
		
		Form<String> formPesquisa = new Form<String>("formPesquisa");
		formPesquisa.add(new TextField<String>("nomeCidade", nomeCidade));
		add(formPesquisa);
		
		IModel<List<Cidade>> cidadesPesquisadas = new AbstractReadOnlyModel<List<Cidade>>() {
			private static final long serialVersionUID = 1L;

			@Override
			public List<Cidade> getObject() {
				AplicacaoCidades aplicacaoCidades = WicketApplication.get().getAplicacaoCidades();
				return aplicacaoCidades.listarCidadesPorNome(nomeCidade.getObject());
			}
		};
		add(new PropertyListView<Cidade>("cidades", cidadesPesquisadas) {
			private static final long serialVersionUID = 1L;

			@Override
			protected void populateItem(ListItem<Cidade> item) {
				item.add(new Label("nomeCompleto"));
			}
		});
	}
}
